import { User } from '../models/User.js';
import { log } from '../utils/logger.js';
import dotenv from 'dotenv';
import bcrypt from 'bcryptjs';
import db from './db.js';

// 加载环境变量
dotenv.config();

// 更新管理员账号
async function updateAdmin() {
  try {
    const newUsername = 'samygood';
    const newPassword = 'samyxue8341';
    
    // 检查是否存在admin用户
    const adminUser = User.findByUsername('admin');
    
    if (adminUser) {
      // 更新现有的admin账号
      const hashedPassword = await bcrypt.hash(newPassword, 10);
      
      const stmt = db.prepare(`
        UPDATE users 
        SET username = ?, password = ?, updated_at = CURRENT_TIMESTAMP
        WHERE id = ?
      `);
      
      stmt.run(newUsername, hashedPassword, adminUser.id);
      
      log.system('管理员账号更新成功', { userId: adminUser.id, newUsername });
      
      console.log('');
      console.log('=======================================');
      console.log('✅ 管理员账号更新成功！');
      console.log('=======================================');
      console.log('');
      console.log('📝 新登录信息:');
      console.log('   用户名: samygood');
      console.log('   密码: samyxue8341');
      console.log('');
      console.log('⚠️  重要提示:');
      console.log('   1. 旧的登录会话已失效');
      console.log('   2. 请使用新账号重新登录');
      console.log('   3. 请妥善保管您的账号密码');
      console.log('');
      console.log('=======================================');
      console.log('');
    } else {
      // 创建新账号
      const userId = await User.create(newUsername, newPassword);
      
      log.system('管理员账号创建成功', { userId, username: newUsername });
      
      console.log('');
      console.log('=======================================');
      console.log('✅ 管理员账号创建成功！');
      console.log('=======================================');
      console.log('');
      console.log('📝 登录信息:');
      console.log('   用户名: samygood');
      console.log('   密码: samyxue8341');
      console.log('');
      console.log('=======================================');
      console.log('');
    }
    
    process.exit(0);
  } catch (error) {
    log.error('更新管理员账号失败', { error: error.message, stack: error.stack });
    console.error('❌ 更新管理员账号失败:', error.message);
    process.exit(1);
  }
}

updateAdmin();

